Software Configuration Management as a Mechanism for Multidimensional Separation of Concerns

نویسندگان

  • Mark C. Chu-Carroll
  • Sara Sprenkle
چکیده

Real software rarely conforms to one single view of the program structure; instead, software is sufficiently complex that the structure of the program is best understood as a collection of orthogonal divisions of the program into components. However, most software tools only recognize the decomposition of the program into source files, forcing the programmer to adopt one primary program decomposition which is well-suited to some tasks and poorly suited to others. Software tools can overcome this weakness by allowing programmers to transform their view of the program to a structure which is more appropriate for the task they need to perform. We propose that a software configuration management (SCM) system, which stores the source code for the project, can perform this task. By providing the SCM system with the capability to generate orthogonal program organizations through compositions of program fragments, the SCM system can support orthogonal decompositions of the program without performing any automatic alteration of the source code. To illustrate the importance of using different decompositions, consider the compiler, a classic example of a project with multiple orthogonal decompositions. The compiler’s two more obvious decompositions—one structural, one functional—are illustrated architecturally in figure 2 A. The structural decomposition is the interpreter design pattern, in which the system is decomposed into components (classes), where each component defines all the behaviors of one structural unit of the program. This decomposition is based on an inheritance hierarchy, which is in turn based on the syntactic structure of the language. A functional view sees the compiler as a chain of components connected by data flowing between the components. The functional decomposition is based on this view: the parser generates an abstract syntax tree (AST) from the source code. The analyzer performs a pass over the AST, decorating nodes with semantic information. The intermediate code generator creates a stream of intermediate code instructions during its pass over the decorated AST. The optimizer operates on the intermediate code stream and generates a new optimized stream. Finally, the code generator translates the optimized intermediate code into executable binary code. In the functional decomposition, each of these components is provided by a component of the system. Given conventional tools, these two decompositions are mutually exclusive. The code can be written in the interpreter pattern, but then the functional decomposition is not available. When faced with a programming task well-suited to the functional decomposition (for instance, replacing the type analyzer with a better type inference algorithm), the programmer needs to view and manipulate code scattered through dozens of different files. The overall operation of the functional components is obscured, and changes to a program’s functionality become significantly more difficult. Adopting the functional decomposition rather than the structural decomposition makes replacing functional components easier but produces its own set of problems. For instance, in the functional decomposition, adding a new syntactic structure to the language requires changing all of the components of each functional decomposition, whereas it only requires adding a single new component to the structural decomposition. The solution to this problem is to build new tools that

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Towards Multi-view Feature-Based Configuration

[Context & motivation] Variability models, feature diagrams ahead, have become commonplace in software product line engineering as a means to document variability early in the lifecycle. Over the years though, their application span has been extended to aid stakeholders in the configuration of software products. [Question/problem] However, current feature-based configuration techniques hardly s...

متن کامل

Supporting Multiple Perspectives in Feature-based Configuration: Foundations

[Context & motivation] Feature diagrams have become commonplace in software product line engineering as a means to document variability early in the lifecycle. Over the years, their application span has also been extended to assist stakeholders in the configuration of software products. [Question/problem] However, existing feature-based configuration techniques offer little support for taylorin...

متن کامل

Separation of Concerns in Software Configuration Management

Separation of concerns is one of the foundational rules of software engineering. Separating the aspects of systems that perform different roles simplifies the code of software systems, making those systems easier to implement, easier to understand, and less prone to bugs. Similarly, software configuration management (SCM) systems are one of the foundational tools of software engineering. SCM to...

متن کامل

A Runtime Model for Multi-Dimensional Separation of Concerns

Multi-dimensional separation of concerns techniques for aspect-oriented software development (AOSD) support symmetric representation and composition of various concerns in a system. In a multi-dimensional separation one can project any set of concerns on another set of concerns hence offering powerful modular and compositional reasoning abilities. This is in contrast with asymmetric approaches ...

متن کامل

Separating Concerns in Software Logistics

Software logistics deals with the storage, administration, distribution and installation of software artefacts, from a full product life-cycle perspective. Software logistics is an important issue in system family engineering where management of common and variable assets is of utmost importance. This implies the need for an integral approach to variability, reaching from problem space to solut...

متن کامل

A Model-Driven Approach for Smart Card Configuration

The configuration of smart cards is a complex multi-level process. Addressing this process efficiently is a major challenge of the smart card industry. In the context of the forthcoming evolutions of smart card systems, we are ex-perimenting new configuration methods. We propose to rely on both model-driven engineering and software product lines to formalize and automate the smart card configur...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2000